package com.hns.tool.task.impl;

import com.hns.tool.task.BackendTask;
import com.hns.tool.task.TaskService;
import com.hns.tool.task.taque.Taque;

/**
 * 基于taque的后台任务定义类
 * @author:wucx
 * @email:zhuangcaijin@126.com
 * @version Revision 2.0.0
 */
public class TaqueTaskService implements TaskService{

	/**
	 * 后台任务执行池
	 */
	private Taque taque;
	
	/**
	 * 是否可用
	 */
	private boolean usable = false;
	
	/**
	 * 添加任务到后台
	 * @param task 待执行的任务
	 * @author:Fisher
	 * @email:zhuangcaijin@126.com
	 */
	@Override
	public void push(BackendTask task) {
		if ( usable ) {
			TaqueTask tt = (TaqueTask) task;
			taque.push(tt.getTask());
		}
	}

	/**
	 * 停止系统时，调用以停止后台任务
	 * @author:Fisher
	 * @email:zhuangcaijin@126.com
	 */
	@Override
	public void shutdown() {
		if ( usable ) {
			usable = false;
			taque.shutdown();
		}
	}

	/**
	 * 是否运行中
	 * @return 任务是否执行中
	 * @author:Fisher
	 * @email:zhuangcaijin@126.com
	 */
	@Override
	public boolean isRunning() {
		return usable;
	}

	/**
	 * 启动后台服务
	 * @author:Fisher
	 * @email:zhuangcaijin@126.com
	 */
	@Override
	public void startup() {
		taque = new Taque(10);
		usable = true;
	}

	
}
